package br.upis.criacional.factory.method.Montadora.Abstrato;

import br.upis.criacional.factory.method.Montadora.Enum.Categoria;

public abstract class Montadora {
	
	public Carro criarCarro(Categoria categoria, FabricaDeAcessorios farol,
			FabricaDeAcessorios pneu, FabricaDeAcessorios banco, FabricaDeAcessorios espelho){
		Carro c = produzirCarro(categoria, farol, pneu, banco, espelho);
		return c;
	}
	
	public Carro criarCarro(Categoria categoria, FabricaDeAcessorios fabrica){
		Carro c = produzirCarro(categoria, fabrica);
		return c;
	}
	
	protected abstract Carro produzirCarro(Categoria categoria, FabricaDeAcessorios fabrica);
	
	protected abstract Carro produzirCarro(Categoria categoria, FabricaDeAcessorios farol,
			FabricaDeAcessorios pneu, FabricaDeAcessorios banco, FabricaDeAcessorios espelho);
}
